#!/usr/bin/ruby

# import_problem:
#  * creates a directory for a problem in the current directory,
#  * copy testdata in the old format and create standard testcase config file

require 'erb'
require 'fileutils'

def input_filename(dir,i)
  "#{dir}/input-#{i}.txt"
end

def answer_filename(dir,i)
  "#{dir}/answer-#{i}.txt"
end

def copy_testcase(importing_test_dir,dir,i)
  system("cp #{importing_test_dir}/#{i}.in #{input_filename(dir,i)}")
  system("cp #{importing_test_dir}/#{i}.sol #{answer_filename(dir,i)}")
end

def process_options(options)
  i = 3
  while i<ARGV.length
    if ARGV[i]=='-t'
      options[:time_limit] = ARGV[i+1].to_i if ARGV.length>i+1
      i += 1
    end
    if ARGV[i]=='-m'
      options[:mem_limit] = ARGV[i+1].to_i if ARGV.length>i+1
      i += 1
    end
    i += 1
  end
end

SCRIPT_DIR = File.dirname(__FILE__)

# print usage
if ARGV.length < 3
  puts <<USAGE
using: import_problem prob_name importing_testcase_dir num_of_testcase [options]
  * creates a directory for a problem in the current directory,
  * copy testdata in the old format and create standard testcase config file
  * creates a test_request template in the current directory + '/test_request'
  * options: -t time-limit (in seconds)
             -m memory-limit (in megabytes)
USAGE
  exit(127)
end

# processing arguments
problem = ARGV[0]
testcase_dir = ARGV[1]
num_testcases = ARGV[2].to_i

options = {:time_limit => 1,  :mem_limit => 16}
process_options(options)

# start working
puts "creating directories"


system("mkdir #{problem}")
system("mkdir #{problem}/script")
system("mkdir #{problem}/test_cases")
#system("cp #{GRADER_DIR}/std-script/* #{problem}/script")

puts "copying testcases"

1.upto(num_testcases) do |i|
  system("mkdir #{problem}/test_cases/#{i}")
  copy_testcase("#{testcase_dir}","#{problem}/test_cases/#{i}",i)
end


# generating all_tests.cfg
puts "generating testcase config file"

template = File.open(SCRIPT_DIR + "/templates/all_tests.cfg.erb").read
all_test_cfg = ERB.new(template)

cfg_file = File.open("#{problem}/test_cases/all_tests.cfg","w")
cfg_file.puts all_test_cfg.result
cfg_file.close

# generating test_request directory
puts "generating test_request template"
FileUtils.mkdir_p("test_request/#{problem}/script")
FileUtils.mkdir_p("test_request/#{problem}/test_cases/1")

template = File.open(SCRIPT_DIR + "/templates/test_request_all_tests.cfg.erb").read
test_request_all_test_cfg = ERB.new(template)

cfg_file = File.open("test_request/#{problem}/test_cases/all_tests.cfg","w")
cfg_file.puts test_request_all_test_cfg.result
cfg_file.close

system("cp #{SCRIPT_DIR}/templates/check_empty test_request/#{problem}/script/check")
system("cp #{SCRIPT_DIR}/templates/answer-1.txt test_request/#{problem}/test_cases/1")

puts "done"
